import 'package:flutter/material.dart';
import 'package:flutter_demo/ui/pages/status/data/counter_notifier.dart';
import 'package:flutter_demo/ui/pages/status/data/share_data.dart';
import 'package:flutter_demo/ui/pages/status/data/share_data_proxy.dart';
import 'package:flutter_demo/ui/pages/status/data/share_data_proxy_notifier.dart';
import 'package:provider/provider.dart';

class A2PageWidget extends StatefulWidget {
  const A2PageWidget({super.key});

  @override
  State<A2PageWidget> createState() => _A2PageWidgetState();
}

class _A2PageWidgetState extends State<A2PageWidget> {
  @override
  Widget build(BuildContext context) {
    return Column(
      children: [
        Center(
          //BuildContext.select可以替换掉Provider.of(context,listen : false) ,看起来和Watch也没有什么不同，但是使用select你就不需要再使用Selector
          //Selector和Consumer类似，只是对Build调用widget方法时提供更精细的控制，简单点来说，Selector也是一个消费者，它允许你可以从模型中准备定义那些属性。
          //Selector依旧支持多个选择 有Selector23456
          child: Selector<ShareData, String>(
              selector: (p0, p1) => p1.nickname,
              builder: (ctx, nickname, child) {
                return Text(nickname);
              }),
        ),
        SizedBox(
          height: 20,
        ),
        Center(
          //Consumer只是在widget中调用了Provider.of ，并将其构造实现委托给了构造器，比如我们常见的Builder，
          //如果你的Widget依赖多个模型，那么它还提供了Cousumer23456方便使用。
          child: Consumer<ShareDataProxy>(builder: (ctx, shareData, child) {
            return Text(shareData.tab);
          }),
        ),

        //BuildContext.watch可以替换掉Provider.of(context,listen : false) ,看起来和read没有什么不同，但是使用watch你就不需要使用Consumer。
        Center(child: Text(context.watch<ShareDataProxyNotifier>().tab)),

        ElevatedButton(
          onPressed: () {
            //BuildContext.read可以替换掉Provider.of(context,listen : false)
            print(context.read<ShareData>().nickname);
          },
          child: Text("A页面:获取B页面修改的值"),
        )
        // ElevatedButton(
        //   onPressed: () {
        //     Navigator.push(context, MaterialPageRoute(builder: (context) {
        //       return B2PageWidget();
        //     }));
        //   },
        //   child: Text("A页面:使用路由情况跳转B"),
        // ),
      ],
    );
  }
}
